package com.lg.desireplayer.search;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import com.lg.desireplayer.R;
import com.lg.desireplayer.bandlist.BandList;
import com.lg.desireplayer.main.Main;

public class Search_Artist extends Activity {

	private ArrayList<String> song;                    // 찾은 노래를 넣을 ArrayList
	private ArrayList<Integer> song_id;				   // 찾은 노래의 아이디를 저장할 ArrayList
	private ListView list;							   // Adapter를 넣을 레이어
	private ArrayAdapter<String> IconAdapter;          // 연결할 Adapter

	private String search_song;						   // 찾을 곡을 넣을 스트링
	private EditText songname;                         // 찾을 곡을 입력받는 Text
	
	private int data_total_song;						// 데이타베이스에 있는 노래의 총 갯수
	private int search_song_cnt;						//찾은 노래 갯수
	
	private boolean flag = true;                      //노래 검색결과가 있는지 없는지 판단한다.
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.search);
		
		TextView search_option = (TextView)findViewById(R.id.search_option);   //검색옵션이름을 불러온다.
		search_option.setText("Artist");									  //검색옵션의 이름을 넣는다.
		
		data_total_song = BandList.getSize();								 //밴드 노래의 총 수를 가져온다.
		
		song = new ArrayList<String>(); 									 //노래 넣을 ArrayList
		song_id = new ArrayList<Integer>();									// 노래 id를 넣을 ArrayList

		songname = (EditText) findViewById(R.id.search_songname);            // 노래 제목을 입력 받는 EditText
		final ImageButton enter = (ImageButton) findViewById(R.id.search_enter);   // 찾기 버튼
		list = (ListView) findViewById(R.id.search_listView1);               // Adapter를 구현할 레이어
		
		IconAdapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_expandable_list_item_1, song);       // 리스트를 구현할 Adapter
		
		list.setAdapter(IconAdapter); 										 // Adapter 구현

		enter.setOnClickListener(new OnClickListener() {                     // 검색버튼을 누루면 시행할 행동

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				search_song = songname.getText().toString();				 // search_song에 노래 제목을 스트링으로 넣는다.
				InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
				imm.hideSoftInputFromWindow(enter.getWindowToken(), 0);      // 찾기 버튼을 누루면 키보드 숨김
				
				for(int j = 0; j < search_song_cnt; j++ ){					//리스트에 있는 노래리스트를 삭제한다.
					song.remove(0);											//노래 검색 리스트 초기화
					song_id.remove(0);										//노래 id 리스트 초기화
					Log.i("song", song+"");//test
				}	
				search_song_cnt = 0;   										// 찾은 노래 곡수를 초기화 한다.
				
				if(search_song.equals("")){
					Toast.makeText(Search_Artist.this, "검색어를 입력해주세요.", Toast.LENGTH_SHORT)
					.show();
					flag = false;  
				}
				
				else{
					for(int i = 0; i < data_total_song; i++){					//데이타베이스의 있는 곡수만큼 for문을 돈다.
						if(BandList.retrieveBand(i).getName().contains(search_song)){ //노래를 총 수만큼 찾는다. 같으면 리스트에 더해서 출력한다.
							song.add(BandList.retrieveBand(i).getTitle()+ "\n" 
									+ "[" + BandList.retrieveBand(i).getName() + "]");		    	        // 노래 제목을 리스트에 add한다.	
							song_id.add(BandList.retrieveBand(i).getId());				// 노래 ID를 리스트에 add한다.
																	   	 
							flag = false;										 // 곡이 없다는 신호를 안 띄우게 false로 바꾼다.
							search_song_cnt++;                                   //찾은 곡의 갯수를 구한다.
							System.out.println(song);//test
							System.out.println(search_song_cnt);//test	
						}	
					}
					if(!flag){
						Toast.makeText(Search_Artist.this, search_song_cnt + "명의 아티스트가 검색되었습니다.", Toast.LENGTH_SHORT)  // 검색했다고 토스트를 띄운다.
						.show();	
					}
				}
	
				IconAdapter.notifyDataSetChanged();		                 // 갱신한다.
	
				if(flag){                                                 //찾는 곡이 없으면 수행한다.
					Toast.makeText(Search_Artist.this, "곡이 없습니다.", Toast.LENGTH_SHORT)
					.show();										   	 // 곡이 없다고 토스트를 띄운다.
					flag = true; 										 // flag 초기화 한다.	
				}
				
				flag = true;		   // flag 초기화 한다.		
				
			}
		});

		list.setOnItemClickListener(new AdapterView.OnItemClickListener() {  // 각각의 리스트를 눌렀을때 시행할 행동

			@Override
			public void onItemClick(AdapterView<?> adapterView, View view,
					int position, long id) {
				// TODO Auto-generated method stub
				String mes = BandList.retrieveBand(position).getTitle() + " 곡을 재생합니다.";              // 선택한 노래를 출력하기 위해 스트링에 넣는다.
				Toast.makeText(Search_Artist.this, mes, Toast.LENGTH_SHORT).show();      // 선택한 노래를 토스트로 띄운다.
				Intent intent = new Intent(Search_Artist.this,Main.class);               // 메인 클래스로 넘어간다.
				intent.putExtra("Search", song_id.get(position));                    // 메인에게 키값과 id를 넘긴다.
				Log.i("URL", ""+song_id.get(position));
				Log.i("playsong", song_id.get(position)+""); //test                           
				startActivity(intent);                                            // intent를 실행 시킨다.
				overridePendingTransition(R.anim.rightin, R.anim.rightout);       // 실행한 intent가 좌우로 움직일 수 있도록 설정한다.
				finish();														  //Activity를 닫는다.
			}
		});
	}
}
